拜讀黑暗執行緒使用yield return方式後,想說自己可以練習不用yield return的方式暴力破解看看,並記錄自己解題過程。
從陣列 [A, B, B, C, X, C, C, B, B, D, D, D] 挑出 [B, B]
、[C, C]
、[B, B]
、[D, D, D]
四個群組。
var raw = "A,B,B,C,X,C,C,B,B,D,D,D".Split(','); //測試資料
var tempList = new List<string>() { raw.First() }; //把第一個字元塞進tempList,當作下一個比較基準
var outputList = new List<string>(); //最後顯示的list
foreach(var item in raw.Skip(1)) //從第二個字元開始(因為第一個字元已經塞進tempList)
{
if (tempList.Last() == item)
{
tempList.Add(item);
}
else
{
if (tempList.Count() > 1) //有兩個以上相同的字元就存進outputList
outputList.AddRange(tempList);
tempList.Clear(); //清空tempList
tempList.Add(item); //再把目前字元存在tempList,當作下一個比較基準
}
}
if (tempList.Count() > 1) //有兩個以上相同的字元就存進outputList
outputList.AddRange(tempList);
outputList.Dump("outputList");
參考資料來源:
黑暗執行緒 C# 練習 - 在陣列中找出連續重複出現項目